﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using MobilnyDostawca.Repositories;

namespace MobilnyDostawca.ViewModels
{
    public class NadzorcyViewModel : IValidatableObject
    {
        public string Login { get; set; }
        public string StareHaslo { get; set; }
        public string NoweHaslo { get; set; }
        public string PotwierdzoneHaslo { get; set; }
        public bool IsValid { get; set; }

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            IsValid = true;

            if (this.Login == null)
            {
                IsValid = false;
                yield return new ValidationResult("Login jest wymagany");
            }
            else if (!Repository.IsTheSupervisorLoginCorrect(this.Login))
            {
                IsValid = false;
                yield return new ValidationResult("Login nie jest poprawny");
            }
            if (this.StareHaslo == null)
            {
                IsValid = false;
                yield return new ValidationResult("Stare hasło jest wymagane");
            }
            else if (!Repository.IsTheSupervisorPasswordCorrect(this.Login, this.StareHaslo))
            {
                IsValid = false;
                yield return new ValidationResult("Stare hasło nie jest poprawne");
            }
            if (this.NoweHaslo == null)
            {
                IsValid = false;
                yield return new ValidationResult("Nowe hasło jest wymagane");
            }
            else if (this.NoweHaslo.Length < 6)
            {
                IsValid = false;
                yield return new ValidationResult("Nowe hasło musi mieć długość co najmniej 6 znaków");
            }
            if (this.PotwierdzoneHaslo == null)
            {
                IsValid = false;
                yield return new ValidationResult("Potwierdzające hasło jest wymagane");
            }
            else if (this.NoweHaslo != this.PotwierdzoneHaslo)
            {
                IsValid = false;
                yield return new ValidationResult("Potwierdzające hasło nie jest poprawne");
            }
        }
    }
}